package com.doit.demo02;

import java.util.Arrays;
import java.util.Iterator;

public class my<E> implements Iterable<E>{
    private int size ;
    private Object[]arr;
    private Object[]empty={};

    public my(){arr=empty;}
    public boolean add(E e)
    {
        if(size==arr.length)
        {
            grow();
        }
        arr[size]=e;
        size++;
        return true;
    }

    private void grow() {
        if(arr.length==0)
        {
            arr = new Object[10];
            return;
        }
        int old =arr.length;
        int newc=old+(old>>1);
        arr= Arrays.copyOf(arr,newc);//将数组长度变为原来的1.5倍,并复制到新的数组中
    }
    public Iterator<E> iterator(){return new Itr<E>();}
    private class Itr<E> implements Iterator<E>{
        private int aa = 0;
        public boolean hasNext(){return aa!=size;}
        public E next(){
            int i = aa;
            Object[]arr = my.this.arr;
            aa++;
            return (E) arr[i];
        }
    }
    //在重写比较器的时候,要注意接口的实现
    //able结尾的一般都是类的实现类接口  tor结尾的一般都是直接创建接口实现类
    //先实现接口的实现 再实现接口的实现类
}
